import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import vue from 'rollup-plugin-vue';
import { terser } from 'rollup-plugin-terser';
import babel from '@rollup/plugin-babel';
import postcss from 'rollup-plugin-postcss';
import url from '@rollup/plugin-url';
import alias from '@rollup/plugin-alias';

export default {
  input: 'src/index.js', // 入口文件
  output: [
    {
      file: 'dist/lt-ui.umd.js',
      format: 'umd', // UMD 格式
      name: 'lt-ui',
      globals: {
        vue: 'Vue',
      },
    },
  ],
  plugins: [
    resolve(), // 解析 npm 包
    commonjs(), // 转换 CommonJS 模块
    vue({
      css: true, // 将 CSS 提取到单独的文件中
      compileTemplate: true, // 编译 Vue 模板
    }),
    alias({
      entries: [
        { find: '@', replacement: __dirname }, // 设置 '@' 别名指向 src 目录
      ]
    }),
    babel({
      exclude: 'node_modules/**',
      babelHelpers: 'bundled',
      presets: ['@babel/preset-env'],
    }),
    terser(), // 压缩输出文件
    postcss({
      inject: true,
      minimize: true, // 压缩 CSS
      sourceMap: true, // 开启 CSS source map
      // 让 postcss 使用 @rollup/plugin-url 处理资源
      plugins: [
        require('postcss-url')({
          url: 'inline', // 或者 'copy', 'rebase'
          maxSize: 10, // 小于 10 KB 的文件会被内联到 CSS 中
          fallback: 'copy', // 如果超出大小限制，文件会被复制到输出目录
          assetsPath: 'assets', // 输出目录
          useHash: true // 使用哈希命名
        })
      ]
    }),
    url({
      // 所有小于 8 KB 的图片将以 base64 格式打包到 JavaScript 中
      limit: 8192,
      // 输出路径
      fileName: '[dirname][hash][extname]',
      // 使用输出路径
      destDir: 'dist/assets'
    }),
  ],
  external: ['vue'], // 将 Vue 作为外部依赖，不打包进输出文件
};
